误导"不使用回调调用异步函数"警告 您所在的位置:网站首页 rpc 异步回调 误导"不使用回调调用异步函数"警告

误导"不使用回调调用异步函数"警告

2023-01-13 22:50| 来源: 网络整理| 查看: 265

NodeJS给了我一个警告

(node:32600)[DEP0013] DeprecationWarning:不建议在不回调的情况下调用异步函数.

当我运行这个'测试'时:

describe('whatever', () => { it('test simple', async () => { const dir = './build/fileTests'; if (fs.existsSync(dir)) { console.log(`deleting ${dir}`); await fs.rmdir(dir); } }); });

好吧,我几乎同意,使用没有回调的异步函数是不好的(因为只有在cb内你才能确定,它发生了,继续等等......

...如果不是因为我故意使用ES7 async/await,因为它们使它同步,所以我可以使用我得到的任何东西......(在这种特殊情况下,我可以逃避到rmdirSync,但那不是我的点...)

所以我的问题:如何摆脱这些警告?

- 以有意义的方式,当使用async/await时... - 处理返回值,因为const r = ...它不被识别为'回调处理'...

1> 0.sh..:

fs.rmdir不返回promise对象,这就是为什么这段代码失败了.您必须使用核心模块中的库或node.js promisify方法来实现它util

注意:如果您对核心模块中的其他异步方法使用相同的方法fs,则会失败

做这个

const util = require("util"); const fs = require("fs"); const removeDir = util.promisify(fs.rmdir); const rmDir = async () => { try { await removeDir("directory_name"); } catch(ex) { console.error(ex) } }

只要确保你宣传它

编辑:声明一个变量来保存uti.promisify(fs.rmdir)@bergi建议的值

编辑:使用try .. catch块添加错误处理

请注意,您应该将`util.promisify`调用放在`rmDir`函数之外,并存储结果. 已经做出改变.谢谢@Bergi.


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有